该内容已被发布者删除 该内容被自由微信恢复。
文章于 3月30日 下午 7:50 被检测为删除。
被用户删除
其他
R语言绘图 | 简单画个圆堆图
欢迎关注小陈的R语言笔记
❝介绍一下使用packcircles包绘制圆堆图,使用的代码都做了注释。
安装和加载R包
#安装R包
install.packages("packcircles")
# 加载R包
library(packcircles) # 加载packcircles包,用于创建圆形布局
library(ggplot2) # 加载ggplot2包,用于绘图
library(packcircles) # 加载packcircles包,用于配色
创建数据
# 创建数据
data <- data.frame(group=paste(letters[1:20]), value=sample(seq(1,100),20))
# 创建一个数据框,其中有两列:group(组名,由字母a到t组成)和value(随机从1到100中抽取的20个值)
# 生成布局。此函数返回一个数据框,每行代表一个气泡。它给出了气泡的中心(x和y)和半径,与value成比例
packing <- circleProgressiveLayout(data$value, sizetype='area')
# 将这些布局信息添加到初始数据框中
data <- cbind(data, packing)
# 检查半径是否与value成比例。我们不希望是线性关系,因为面积必须与value成比例
# plot(data$radius, data$value) # 这行代码被注释掉了,但可以用来检查半径和值之间的关系
# 下一步是从一个中心和一个半径到由多条直线绘制的圆的坐标。
dat.gg <- circleLayoutVertices(packing, npoints=50)
# 使用circleLayoutVertices函数,为每个气泡生成50个点的坐标
绘图
# 绘图
ggplot() +
# 创建气泡
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
# 使用geom_polygon函数,根据dat.gg数据框中的x和y坐标绘制多边形(即气泡),并为每个气泡指定填充颜色(由id决定)
# 在每个气泡的中心添加文本,并控制其大小
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) + # 设置文本大小的连续比例尺,范围从1到4
# 通用主题设置:
theme_void() + # 使用theme_void函数设置空白主题
theme(legend.position="none") + # 移除图例
coord_equal() # 设置坐标轴比例相等,确保气泡不会变形
美化
# 自定义颜色方案
custom_colors <- terrain.colors(n = length(unique(data$group)))
# 开始绘图
ggplot() +
# 创建气泡,使用dat.gg数据集中的x和y坐标,通过id分组,并用id的因子填充颜色
geom_polygon(data = dat.gg, aes(x, y, group = id, fill = as.factor(id)),
# 设置气泡边框颜色为黑色
colour = "black",
# 设置气泡填充颜色的透明度为0.6
alpha = 0.6,
# 设置气泡边框粗细为0.1
size = 0.1) +
# 使用自定义颜色方案设置气泡填充颜色
scale_fill_manual(values = custom_colors) +
# 在气泡中心添加文本标签,文本内容为group字段
geom_text(data = data, aes(x, y, label = group), size = 3.5) +
# 设置绘图主题为简洁主题
theme_minimal() +
# 进一步自定义主题
theme(
# 移除坐标轴标题
axis.title = element_blank(),
# 移除坐标轴刻度文本
axis.text = element_blank(),
# 移除坐标轴刻度线
axis.ticks = element_blank(),
# 移除图例
legend.position = "none",
# 移除网格线
panel.grid = element_blank(),
# 移除面板背景色
panel.background = element_blank()
) +
# 设置坐标轴比例为固定比例,确保气泡形状不会变形
coord_fixed()
#设置颜色
custom_colors <- c(
"#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2",
"#D55E00", "#CC79A7", "#F6BD16", "#999999", "#B22234",
"#D53E4F", "#564E51", "#9CC6D9", "#756BB1", "#3498DB",
"#9B59B6", "#34495E", "#16A085", "#2ECC71", "#F39C12"
)
# 美化绘图
ggplot() +
# 创建气泡,使用dat.gg数据集中的x和y坐标,通过id分组,并用id的因子填充颜色
geom_polygon(data = dat.gg, aes(x, y, group = id, fill = as.factor(id)),
# 设置气泡边框颜色为黑色
colour = "black",
# 设置气泡填充颜色的透明度为0.6
alpha = 0.6,
# 设置气泡边框粗细为0.1
size = 0.1) +
# 使用自定义颜色方案设置气泡填充颜色
scale_fill_manual(values = custom_colors) +
# 在气泡中心添加文本标签,文本内容为group字段
geom_text(data = data, aes(x, y, label = group), size = 3.5) +
# 设置绘图主题为简洁主题
theme_minimal() +
# 进一步自定义主题
theme(
# 移除坐标轴标题
axis.title = element_blank(),
# 移除坐标轴刻度文本
axis.text = element_blank(),
# 移除坐标轴刻度线
axis.ticks = element_blank(),
# 移除图例
legend.position = "none",
# 移除网格线
panel.grid = element_blank(),
# 移除面板背景色
panel.background = element_blank()
) +
# 设置坐标轴比例为固定比例,确保气泡形状不会变形
coord_fixed()